The present invention relates to the development of test programs used to verify microprocessor functionality.
When designing microprocessors or similarly complicated VLSI devices a functional model representing the microprocessor's register-level functions is designed. To test the functional model one must confirm that it performs exactly as specified either by the designers or by the architecture model it represents. Programs executed using a simulation of the model are usually written by hand.
In the past ten years, with the rapid growth and complication of microprocessor technology, various new methods of testing microprocessors have been announced. Most of them relate to functional testing, which uses only the information that the user of the microprocessor can see (for example, the instruction set of the microprocessor).
Functional testing has proven to be extremely reliable, according to literatures such as Thatte, S. M. and J. A. Abraham, "Test Generation for Microprocessors", IEEE transactions on Computers, Vol.C-29, No. 6, June 1980, pp.429-441, and the like. And methods using random instruction generators are considered inexpensive and efficient for functional level microprocessor testing. The cost and speed at which errors are found merit the use of randomly generated test vectors or test programs. According to Klug, H., "Microprocessor Testing by Instruction Sequences Derived from Random Patterns", 1988 International Test Conference, Paper 4.2, pp.73-70, instruction sequences for test programs produced by generating a random binary pattern and then translating it into an instruction name (mnemonic) are equivalent to a functional test.
In the general functional level testing procedure, how quickly functional testing can be completed, and how well the functional model can be examined for errors both depend on the time spent in test generation.
However, the conventional methods for generating test programs have the following problems:
functional models that are tested using a limited number of handwritten programs may contain errors those programs cannot find. PA1 automatic test generation at the functional level has previously not been able to create complicated relationships among instructions in the tests written. PA1 the time that it takes to write functional level tests by hand, and the limited number of tests and limited variety of test sequences make functional testing a long process. PA1 with every new change in a microprocessor's architecture, a new battery of functional tests must be written.
So far, the merits of testing using random methods on the microprocessor level have not reached the functional level of microprocessor design where all of the microprocessors functions must be verified against a simulation of the correct architecture design, which usually exists.